
package NajaTaskClient.Conexao;

/**
 * todas as chamadas sql estao aqui , isso para facilitar o desenvolvimento e manutençao .
 * Essa é uma classe que só pode ser instanciada uma vez 
 * @author web
 */
public final class DbQueries {

    private static DbQueries instancia;

    /**
     * retorna a instancia de dbqueries
     * @return DbQueries
     */
    public static synchronized DbQueries getInstance() {
        if (instancia == null) {
            instancia = new DbQueries();
        }
        return instancia;
    }

    /**
     * Gera uma query USE
     * @param dbNome
     * @return String query
     */
    public String useDb(String dbNome) {
        return "USE " + dbNome;
    }

    /**
     * Gera uma query SHOW DATABASES
     * @return String query
     */
    public String showDbs() {
        return "SHOW DATABASES";
    }

    /**
     * Gera uma query SHOW TABLES
     * @return String query
     */
    public String showTbs() {
        return "SHOW TABLES";
    }

    /**
     * Gera uma query SHOW COLUMNS
     * @param tabela 
     * @return String query
     */
    public String showCols(String tabela) {
        return "SHOW COLUMNS FROM " + tabela;
    }

    /**
     * Gera uma query INSERT INTO VALUES
     * @param tabela nome da tabela
     * @param colunas separado por virgulas exemplo nome , codigo,valor
     * @param valores entre aspas simples separado por virgulas exemplo
     *'alex','125','carro'
     * @return String query
     */
    public String insert(String tabela, String colunas, String valores) {
        return "INSERT INTO " + tabela + " ( " + colunas + " ) VALUES ( " + valores + " )";
    }

    /**
     * Gera uma query UPDATE SET VALUES
     * @param tabela
     * @param colunas
     * @param valores
     * @return String query
     */
    public String update(String tabela, String colunas, String valores) {
        return "UPDATE " + tabela + " SET  ( " + colunas + " ) VALUES ( " + valores + " )";
    }
     /**
     * Gera uma query UPDATE SET VALUES
     * @param tabela
     * @param colunas
     * @param valores
     * @return String query
     */
    public String updateWhere(String tabela, String valores,String clausula) {
        /*
         * UPDATE EMPREGADOS
  SET CARGO=NULL, SALÁRIO=0, BÔNUS=0, COMISS=0
  WHERE DEP_TRAB = 'E21' AND CARGO <> 'GERENTE'

         */
        return "UPDATE " + tabela + " SET  " + valores + "  WHERE " + clausula + " ";
    }
    /*
     *   $db_string = 	"UPDATE fornecedores SET Codigo=X,Nome='novo nome' WHERE Codigo=x;
     */

    /**
     *Gera uma query CREATE DATABASE
     * @param dbNome nome do banco de dados
     * @return String query
     */
    public String createDb(String dbNome) {
        return " CREATE DATABASE IF NOT EXISTS " + dbNome;
    }

    /**
     *Gera uma query CREATE TABLE
     * @param tabela
     * @param colunas
     * @return String query
     */
    public String createTable(String tabela, String colunas) {
        return " CREATE TABLE " + tabela + " ( " + colunas + " ) ";
        /*
         * CREATE TABLE `test` (`dd` INT( 11 ) NOT NULL);
         */
    }

    /**
     *Gera uma query ALTER TABLE table ADD COLUMN colum [COLUMNCREATE]
     * @param tabela
     * @param colunaCreate String formatada de criação de uma coluna
     * @return String query
     */
    public String createColumn(String tabela, String colunaCreate) {
        return "ALTER TABLE " + tabela + " ADD COLUMN " + colunaCreate;
    }

    /**
     *Gera uma query ALTER TABLE table ADD COLUMN colum [COLUMNCREATE]
     * @param tabela
     * @param coluna
     * @param valor
     * @return String query
     */
    public String selectWhereSimple(String tabela, String coluna, String valor) {
        return "SELECT * FROM " + tabela + " WHERE " + coluna + " = \'" + valor + "\' ";

    }


     /**
     *Gera uma query SELECT * FROM «tabela»
     * @param tabela
     * @return String query
     */
    public String selectAll(String tabela) {
        return "SELECT * FROM " + tabela + " ";
    }

/**
     *Gera uma query ALTER TABLE table ADD COLUMN colum [COLUMNCREATE]
     * @param tabela
     * @param coluna
     * @param valor
     * @return String query
     */
    public String selectWhere(String tabela, String clausula) {
        return "SELECT * FROM " + tabela + " WHERE " + clausula + " ";

    }
    

    /**
     *
     * @param tabela
     * @param coluna
     * @param valor
     * @return
     */
    public String selectWhereSimplePerson(String tabela, String coluna, String valor) {
        return "SELECT * FROM " + tabela + " WHERE " + valor;

    }

    public String deleteFromWhereColumn(String tabela, String clausulaWhere) {
        return "DELETE FROM " + tabela + " WHERE " + clausulaWhere;
    }
}
